﻿Imports System.Data.SqlClient
Public Class Usuarios
    Inherits Conexion


    Sub Agregar(ByVal usuarios As SistemaCajas.BE.Usuarios)

        Dim sqlConnection As SqlConnection = New SqlConnection()
        Dim sqlCommand As SqlCommand = New SqlCommand()

        Try
            Conectado()
            sqlCommand.Parameters.Add(New SqlParameter("@NombreCompleto", usuarios.NombreCompleto))
            sqlCommand.Parameters.Add(New SqlParameter("@Identificacion", usuarios.Identificacion))
            sqlCommand.Parameters.Add(New SqlParameter("@NombreUsuario", usuarios.NombreUsuario))
            sqlCommand.Parameters.Add(New SqlParameter("@Contraseña", usuarios.Contraseña))
            sqlCommand.Parameters.Add(New SqlParameter("@Perfil", usuarios.Perfil))
            sqlCommand.Parameters.Add(New SqlParameter("@Estado", usuarios.Estado))
            sqlCommand.Parameters.Add(New SqlParameter("@FechaCreacion", usuarios.FechaCreacion))

            sqlCommand.CommandText = "AgregarUsuarios"
            sqlCommand.CommandType = CommandType.StoredProcedure
            sqlCommand.Connection = stringConexion
            sqlCommand.ExecuteNonQuery()

            Desconectado()

        Catch ex As Exception
            Throw New Exception("Problemas al Insertar en la Base de Datos" & ex.ToString)
        Finally
            Desconectado()
        End Try
    End Sub

    Function Listar() As List(Of SistemaCajas.BE.Usuarios)

        Dim sqlConnection As SqlConnection = New SqlConnection()
        Dim sqlCommand As SqlCommand = New SqlCommand()
        Dim myReader As SqlDataReader
        Dim lista As New List(Of SistemaCajas.BE.Usuarios)

        Try
            Conectado()
            sqlCommand.CommandText = "ListarUsuarios"
            sqlCommand.CommandType = CommandType.StoredProcedure
            sqlCommand.Connection = stringConexion

            myReader = sqlCommand.ExecuteReader()

            If myReader.HasRows Then

                Do While myReader.Read()

                    Dim mantenimientoUsuario As New SistemaCajas.BE.Usuarios
                    mantenimientoUsuario.Id = CInt(myReader.GetValue(0))
                    mantenimientoUsuario.NombreCompleto = myReader.GetValue(1).ToString
                    mantenimientoUsuario.Identificacion = myReader.GetValue(2).ToString
                    mantenimientoUsuario.NombreUsuario = myReader.GetValue(3).ToString
                    mantenimientoUsuario.Contraseña = myReader.GetValue(4).ToString
                    mantenimientoUsuario.Perfil = myReader.GetValue(5).ToString
                    mantenimientoUsuario.Estado = myReader.GetValue(6).ToString
                    mantenimientoUsuario.FechaCreacion = myReader.GetValue(7).ToString
                    lista.Add(mantenimientoUsuario)

                Loop
            End If

            myReader.Close()
        Catch ex As Exception
            Throw New Exception("Problemas al Insertar en la Base de Datos" & ex.ToString)
        Finally
            Desconectado()
        End Try
        Return lista
    End Function


    Function Editar(ByVal usuarios As SistemaCajas.BE.Usuarios) As Boolean

        Dim sqlConnection As SqlConnection = New SqlConnection()
        Dim sqlCommand As SqlCommand = New SqlCommand()

        Try

            Conectado()

            sqlCommand.Parameters.Add(New SqlParameter("@Id", usuarios.Id))
            sqlCommand.Parameters.Add(New SqlParameter("@NombreCompleto", usuarios.NombreCompleto))
            sqlCommand.Parameters.Add(New SqlParameter("@Identificacion", usuarios.Identificacion))
            sqlCommand.Parameters.Add(New SqlParameter("@NombreUsuario", usuarios.NombreUsuario))
            sqlCommand.Parameters.Add(New SqlParameter("@Contraseña", usuarios.Contraseña))
            sqlCommand.Parameters.Add(New SqlParameter("@Perfil", usuarios.Perfil))
            sqlCommand.Parameters.Add(New SqlParameter("@Estado", usuarios.Estado))

            sqlCommand.CommandText = "EditarUsuarios"
            sqlCommand.CommandType = CommandType.StoredProcedure
            sqlCommand.Connection = stringConexion
            sqlCommand.ExecuteNonQuery()
            Desconectado()

        Catch Ex As Exception
            Throw New Exception("Problemas al Editar en la Base de Datos" & Ex.ToString)
            Return False
        Finally
            Desconectado()
        End Try
        Return True
    End Function



    Function CambiarEstado(ByVal id As Integer) As SistemaCajas.BE.Usuarios

        Dim sqlConnection As SqlConnection = New SqlConnection()
        Dim sqlCommand As SqlCommand = New SqlCommand()
        Dim lector As SqlDataReader

        Dim resultado As SistemaCajas.BE.Usuarios = Nothing
        resultado = New SistemaCajas.BE.Usuarios

        Try
            Conectado()

            sqlCommand.CommandText = "ActualizarEstado"
            sqlCommand.CommandType = CommandType.StoredProcedure
            sqlCommand.Connection = stringConexion

            sqlCommand.Parameters.Add(New SqlParameter("@Id", id))

            lector = sqlCommand.ExecuteReader()

            If lector.HasRows Then
                Do While lector.Read()
                    resultado.Id = CInt(lector.GetValue(0))
                Loop
            End If
            lector.Close()

        Catch ex As Exception
            Throw New Exception("Problemas al Obtener" & ex.ToString)
        Finally
            If sqlConnection.State <> ConnectionState.Closed Then
                sqlConnection.Close()
            End If
        End Try


        Return resultado
    End Function



    Function CambiarEstado2(ByVal id As Integer) As SistemaCajas.BE.Usuarios

        Dim sqlConnection As SqlConnection = New SqlConnection()
        Dim sqlCommand As SqlCommand = New SqlCommand()
        Dim lector As SqlDataReader

        Dim resultado As SistemaCajas.BE.Usuarios = Nothing
        resultado = New SistemaCajas.BE.Usuarios

        Try
            Conectado()

            sqlCommand.CommandText = "ActualizarEstado2"
            sqlCommand.CommandType = CommandType.StoredProcedure
            sqlCommand.Connection = stringConexion

            sqlCommand.Parameters.Add(New SqlParameter("@Id", id))

            lector = sqlCommand.ExecuteReader()

            If lector.HasRows Then
                Do While lector.Read()
                    resultado.Id = CInt(lector.GetValue(0))
                Loop
            End If
            lector.Close()

        Catch ex As Exception
            Throw New Exception("Problemas al Obtener" & ex.ToString)
        Finally
            If sqlConnection.State <> ConnectionState.Closed Then
                sqlConnection.Close()
            End If
        End Try


        Return resultado
    End Function




    Function Obtener(ByVal id As Integer) As SistemaCajas.BE.Usuarios

        Dim sqlConnection As SqlConnection = New SqlConnection()
        Dim sqlCommand As SqlCommand = New SqlCommand()
        Dim myReader As SqlDataReader

        Dim resultado As SistemaCajas.BE.Usuarios = Nothing

        Try
            Conectado()
            sqlCommand.CommandText = "ObtenerUsuarios"
            sqlCommand.CommandType = CommandType.StoredProcedure
            sqlCommand.Connection = stringConexion
            sqlCommand.Parameters.Add(New SqlParameter("@Id", id))

            myReader = sqlCommand.ExecuteReader()

            If myReader.HasRows Then
                Do While myReader.Read()

                    resultado = New SistemaCajas.BE.Usuarios

                    resultado.Id = CInt(myReader.GetValue(0))
                    resultado.NombreCompleto = myReader.GetValue(1).ToString
                    resultado.Identificacion = myReader.GetValue(2).ToString
                    resultado.NombreUsuario = myReader.GetValue(3).ToString
                    resultado.Contraseña = myReader.GetValue(4).ToString
                    resultado.Perfil = myReader.GetValue(5).ToString
                    resultado.Estado = myReader.GetValue(6).ToString
                    resultado.FechaCreacion = myReader.GetValue(7).ToString
                Loop
            End If

            myReader.Close()

        Catch ex As Exception
            Throw New Exception("Problemas al Obtener" & ex.ToString)
        Finally
            If sqlConnection.State <> ConnectionState.Closed Then
                sqlConnection.Close()
            End If
        End Try
        Return resultado
    End Function

    Function FiltrarUsuariosActivos() As List(Of SistemaCajas.BE.Usuarios)

        Dim sqlConnection As SqlConnection = New SqlConnection()
        Dim sqlCommand As SqlCommand = New SqlCommand()
        Dim myReader As SqlDataReader
        Dim filtro As New List(Of SistemaCajas.BE.Usuarios)

        Try
            Conectado()
            sqlCommand.CommandText = "FiltrarUsuariosActivos"
            sqlCommand.CommandType = CommandType.StoredProcedure
            sqlCommand.Connection = stringConexion

            myReader = sqlCommand.ExecuteReader()

            If myReader.HasRows Then

                Do While myReader.Read()

                    Dim mantenimientoUsuario As New SistemaCajas.BE.Usuarios
                    mantenimientoUsuario.Id = CInt(myReader.GetValue(0))
                    mantenimientoUsuario.NombreCompleto = myReader.GetValue(1).ToString
                    mantenimientoUsuario.Identificacion = myReader.GetValue(2).ToString
                    mantenimientoUsuario.NombreUsuario = myReader.GetValue(3).ToString
                    mantenimientoUsuario.Contraseña = myReader.GetValue(4).ToString
                    mantenimientoUsuario.Perfil = myReader.GetValue(5).ToString
                    mantenimientoUsuario.Estado = myReader.GetValue(6).ToString
                    mantenimientoUsuario.FechaCreacion = myReader.GetValue(7).ToString
                    filtro.Add(mantenimientoUsuario)

                Loop
            End If

            myReader.Close()
        Catch ex As Exception
            Throw New Exception("Problemas al Mostrar en la Base de Datos" & ex.ToString)
        Finally
            Desconectado()
        End Try
        Return filtro
    End Function


    Function FiltrarUsuariosInhactivos() As List(Of SistemaCajas.BE.Usuarios)

        Dim sqlConnection As SqlConnection = New SqlConnection()
        Dim sqlCommand As SqlCommand = New SqlCommand()
        Dim myReader As SqlDataReader
        Dim filtro As New List(Of SistemaCajas.BE.Usuarios)

        Try
            Conectado()
            sqlCommand.CommandText = "FiltrarUsuariosInhactivos"
            sqlCommand.CommandType = CommandType.StoredProcedure
            sqlCommand.Connection = stringConexion

            myReader = sqlCommand.ExecuteReader()

            If myReader.HasRows Then

                Do While myReader.Read()

                    Dim mantenimientoUsuario As New SistemaCajas.BE.Usuarios
                    mantenimientoUsuario.Id = CInt(myReader.GetValue(0))
                    mantenimientoUsuario.NombreCompleto = myReader.GetValue(1).ToString
                    mantenimientoUsuario.Identificacion = myReader.GetValue(2).ToString
                    mantenimientoUsuario.NombreUsuario = myReader.GetValue(3).ToString
                    mantenimientoUsuario.Contraseña = myReader.GetValue(4).ToString
                    mantenimientoUsuario.Perfil = myReader.GetValue(5).ToString
                    mantenimientoUsuario.Estado = myReader.GetValue(6).ToString
                    mantenimientoUsuario.FechaCreacion = myReader.GetValue(7).ToString
                    filtro.Add(mantenimientoUsuario)

                Loop
            End If

            myReader.Close()
        Catch ex As Exception
            Throw New Exception("Problemas al Mostrar en la Base de Datos" & ex.ToString)
        Finally
            Desconectado()
        End Try
        Return filtro
    End Function

    Function FiltrarUsuariosIdentificación(ByVal Identificacion As SistemaCajas.BE.Usuarios) As List(Of SistemaCajas.BE.Usuarios)

        Dim sqlConnection As SqlConnection = New SqlConnection()
        Dim sqlCommand As SqlCommand = New SqlCommand()
        Dim myReader As SqlDataReader
        Dim filtro As New List(Of SistemaCajas.BE.Usuarios)

        Try
            Conectado()

            sqlCommand.Parameters.Add(New SqlParameter("@Identificacion", Identificacion))
            sqlCommand.CommandText = "FiltrarUsuariosIdentificacion"
            sqlCommand.CommandType = CommandType.StoredProcedure
            sqlCommand.Connection = stringConexion

            myReader = sqlCommand.ExecuteReader()

            If myReader.HasRows Then

                Do While myReader.Read()

                    Dim mantenimientoUsuario As New SistemaCajas.BE.Usuarios
                    mantenimientoUsuario.Id = CInt(myReader.GetValue(0))
                    mantenimientoUsuario.NombreCompleto = myReader.GetValue(1).ToString
                    mantenimientoUsuario.Identificacion = myReader.GetValue(2).ToString
                    mantenimientoUsuario.NombreUsuario = myReader.GetValue(3).ToString
                    mantenimientoUsuario.Contraseña = myReader.GetValue(4).ToString
                    mantenimientoUsuario.Perfil = myReader.GetValue(5).ToString
                    mantenimientoUsuario.Estado = myReader.GetValue(6).ToString
                    mantenimientoUsuario.FechaCreacion = myReader.GetValue(7).ToString
                    filtro.Add(mantenimientoUsuario)

                Loop
            End If

            myReader.Close()
        Catch ex As Exception
            Throw New Exception("Problemas al Insertar en la Base de Datos" & ex.ToString)
        Finally
            Desconectado()
        End Try
        Return filtro
    End Function

End Class
